package com.kt.controller;

import com.kt.client.ProductClient;
import com.kt.dataobject.ProductInfo;
import com.kt.dto.CartDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.Arrays;
import java.util.List;

/**
 *
 */
@RestController
@Slf4j
public class ClientController {
    //@Autowired
    //private LoadBalancerClient loadBalancerClient;//第二种方式
    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private ProductClient productClient;

    @GetMapping("/getProductMsg")
    public String getProductMsg(){
        //第一种方式（直接使用resttemplate，url写死）
//        RestTemplate restTemplate=new RestTemplate();
//        String response= restTemplate.getForObject("http://localhost:8080/msg",String.class);
        //第二种方式（利用loadBalancerClient通过应用名获取任意端口）
//        RestTemplate restTemplate=new RestTemplate();
//        //根据服务名字获取任意 服务
//        ServiceInstance serviceInstance=loadBalancerClient.choose("PRODUCT");
//        String url=String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort())+"/msg";
//        String response=restTemplate.getForObject(url,String.class);
        //第三种方式(利用@LoadBalanced，可在restTemplate里使用应用名字)
        //String response=restTemplate.getForObject("http://product/msg",String.class);
        String response=productClient.productMsg();
        log.info("response={}",response);
        return response;
    }
    @GetMapping("/getProductList")
    public String getProductList(){
        List<ProductInfo> response=productClient.listForOrder(Arrays.asList("164103465734242707"));

        log.info("response={}",response);
        return "呦西";
    }

    @GetMapping("/productDecreaseStock")
    public String productDecreaseStock(){
        productClient.decreaseStock(Arrays.asList(new CartDTO("164103465734242707",1)));
        return "成功啦~♪(^∇^*)";
    }

}
